package model

// 用户信息结构体
type UserInfo struct {
	UserId      string               `json:"userId"`                // 用户id(帐号)，企业内必须唯一。长度为1~64个字符（包括汉字和英文字母）
	Name        string               `json:"name"`                  // 用户名称。长度为0~64个字符（包括汉字和英文字母,可为空）
	Gender      int                  `json:"gender"`                // 性别，整型。0表示男性，1表示女性
	Mobile      string               `json:"mobile,omitempty"`      // 手机号码。企业内必须唯一
	Phone       string               `json:"phone,omitempty"`       // 电话号码
	Email       string               `json:"email,omitempty"`       // 邮箱。长度为0~64个字符
	Dept        []int                `json:"dept"`                  // 所属部门列表,不超过20个
	EnableState int                  `json:"enableState,omitempty"` // 用户状态（-1：禁用，1：已授权，0：未激活）
	ShortCode   string               `json:"shortCode,omitempty"`   // 用户短号，长度为0~32个字符。（服务端版本要求 >=v2023.3.1，低版本请联系技术支持）
	Attrs       []UserInfoAttr       `json:"attrs,omitempty"`       // 自定义字段
	DeptDetail  []UserInfoDeptDetail `json:"deptDetail,omitempty"`  // 用户所属部门列表信息，用于查询用户资料的接口返回
}

// Attr 表示自定义字段的结构体
type UserInfoAttr struct {
	Name  string `json:"name"`  // 自定义字段名称
	Value string `json:"value"` // 自定义字段值
}

// 用户职务结构体
type UserInfoPos struct {
	UserID   string `json:"userId"`             // 用户ID，必须，长度为1~64个字符
	DeptID   int    `json:"deptId"`             // 部门ID，必须，用户必须在该部门内
	Position string `json:"position,omitempty"` // 职务，非必须，服务端版本 >=v2023.3.1 支持清空
	Weight   int    `json:"weight,omitempty"`   // 职务权重，非必须，值越大排序越靠前
	SortID   int    `json:"sortId,omitempty"`   // 用户在部门中的排序，非必须，值越大排序越靠前
}

// 用户所属部门列表信息
type UserInfoDeptDetail struct {
	DeptID   int    `json:"deptId"`   // 部门ID
	Position string `json:"position"` // 职务名称
	Weight   int    `json:"weight"`   // 职务权重，值越大排序越靠前
	SortID   int    `json:"sortId"`   // 用户在部门中的排序，值越大排序越靠前
}

// 部门下用户列表的结构体
type DepartmentUserListInfo struct {
	UserID string `json:"userId"` // 用户ID
	Name   string `json:"name"`   // 用户名称
	Gender int    `json:"gender"` // 性别：0表示男性，1表示女性
	Dept   []int  `json:"dept"`   // 所属部门id列表
}

// 部门下用户列表的结构体 响应结构体，包含用户列表
type DepartmentUserList struct {
	UserList []DepartmentUserListInfo `json:"userList"` // 用户列表
}

/*------------------------------------------------------------------------------------*/

// DepartmentInfo 部门信息结构体
type DepartmentInfo struct {
	Id       int    `json:"id,omitempty"`     // 部门id，整型。必须大于0
	Name     string `json:"name"`             // *部门名称。不能超过32个字符（包括汉字和英文字母）
	ParentId int    `json:"parentId"`         // *父部门id。根部门id为0
	SortId   int    `json:"sortId,omitempty"` // 整型。在父部门中的排序值。值越小排序越靠前。填0自动生成。同级部门不允许重复（推荐全局唯一）
	Alias    string `json:"alias,omitempty"`  // 字符串。部门id的别名（通常存放以字符串表示的部门id）。唯一不为空，相同会覆盖旧数据。
}

type DepartmentList struct {
	DeptList []DepartmentInfo `json:"deptList"` // 部门列表
}

// DepartmentAliasInfo 部门别名信息结构体
type DepartmentAliasInfo struct {
	Id    int    `json:"id"`    // 部门id
	Alias string `json:"alias"` // 部门别名
}

// DepartmentAliasList 部门别名列表
type DepartmentAliasList struct {
	DeptList []DepartmentAliasInfo `json:"aliasList"` // 部门别名列表
}

// DepartmentSort 部门修改排序结构体
type DepartmentSort struct {
	Id           int `json:"id"`           // 需要排序部门ID
	BehindDeptId int `json:"behindDeptId"` // 排在那个部门的后面、传入这个部门的ID即可、0代表系统默认在目录结构的第一位
}

// GroupInfo 群信息结构体
type GroupInfo struct {
	Id      string        `json:"id"`      // 群ID
	Name    string        `json:"name"`    // 群名称
	Members []GroupMember `json:"members"` // 群成员列表
}

// GroupMember 群成员信息结构体
type GroupMember struct {
	Account string `json:"account"` // 用户账号
	Name    string `json:"name"`    // 用户名称
	Mobile  string `json:"mobile"`  // 手机号码
}

// GroupList 群列表结构体
type GroupList struct {
	GroupList []GroupListItem `json:"groupList"` // 群列表
}

// GroupListItem 群列表项结构体
type GroupListItem struct {
	Id   string `json:"id"`   // 群ID
	Name string `json:"name"` // 群名称
}
